今天分享的是由 CloudBees 所分享的 DevOps 議題,
GitOps 的世界中,該如何做好 Secret Management ?
原文連結: https://cd.foundation/blog/2020/11/05/gitops-kubernetes-and-secret-management/
該影片提到幾個重點
1. Git 本身的設計不是用來純放與共享 Secret 等資訊
所以千萬千萬不要於 Git 內去存放 Secret 物件,因為他只有編碼,沒有加密。
有不少的流派方式可以用來管理 Secret Management,譬如說
1. Sealed Secrets 該專案的流派,實實在在的加密敏感資訊,並且把加密後的結果存放到 Git 專案中,當這些物件被套用到 Kubernetes 內時,會有對應的 Controller 去解密,並且產生最後的 Secret 物件
評論: 這種流派下就要特別注意該加解密的 key 不能外流,並且要定期 rotate
2. 打包 Image 的時候直接將相關的機密資訊一起打包,這樣使用時完全不需要外力介入,直接使用。
然後這種情況帶來的問題很多,缺乏彈性,image 本身變得非常危險,要花更多心力去確保 Image 不會外流。極度不推薦這種走法
3. 透過外部的 External Secrets Management 平台來管理,譬如使用由 Godaddy 所開源的 kubernetes-external-secrets 專案,該專案後端支援 AWS Secrets Manager, AWS System Manager, Hashicorp Vault, Azure Key Vault, Google Secret Manager 等眾多項目,並且提供一個統一介面給 Kubernetes 使用。 Kubernetes 中透過 ExternalSecrets 的方式就會觸發 Controller 去存取相關的機密資訊,並且轉成 Secret 物件供容器使用
有興趣的人可以點選下方連結觀賞完整影片,大概 20 分鐘左右,非常適合邊吃飯邊看